# Sprint 5: Osciladores Avançados e Tendências

Atingimos **28 indicadores**! Para cruzar a marca dos 30+, o Sprint 5 focará em Osciladores Avançados e o popular Williams Alligator (Tendência/Oscilação). O escopo técnico abrange 5 novos indicadores, mantendo nosso pipeline estabilizado (O(N) batch, O(1) incremental).

## 🎯 Escopo do Sprint 5 (5 Indicadores)

1. **Awesome Oscillator (AO)**
   - **Tipo**: Panel (Histograma)
   - **Lógica**: Diferença entre SMA(Media, 5) e SMA(Media, 34) (onde Media = (High+Low)/2).
   - **Visual**: Barras verdes quando subindo, vermelhas quando caindo, atravessando a linha zero.

2. **Stochastic RSI (StochRSI)**
   - **Tipo**: Panel (Oscilador 0-100)
   - **Lógica**: Aplica a fórmula do Estocástico sobre os valores do RSI. Exige persistência de histórico RSI.
   - **Visual**: Linhas %K e %D com zonas de Overbought (80) e Oversold (20).

3. **Williams Alligator**
   - **Tipo**: Overlay (Linhas sobre as velas)
   - **Lógica**: Três SMMAs (Smoothed Moving Averages) com Offset temporal para o futuro.
     - Mandíbula (Azul, 13, Offset 8)
     - Dentes  (Vermelho, 8, Offset 5)
     - Lábios  (Verde, 5, Offset 3)

4. **Momentum (MOM)**
   - **Tipo**: Panel (Oscilador)
   - **Lógica**: Preço Atual - Preço de N períodos atrás (ou Ratio x 100).
   - **Visual**: Linha flutuando entorno de uma base central (Zero / 100).

5. **Chande Momentum Oscillator (CMO)**
   - **Tipo**: Panel (Oscilador -100 a +100)
   - **Lógica**: Diferença entre Soma de Ganhos e Perdas dividida pelo Total (similar ao RSI, mas não suavizado na média de ponta a ponta e na escala -100 a +100).
   - **Visual**: Linha contínua com níveis padrão em +50 e -50.

---

## 🛠️ Arquitetura Proposta

Manteremos a coesão máxima via roteiro estabelecido:

- **10 Models (`.freezed.dart`)**
  - `{ao, stoch_rsi, alligator, mom, cmo}_value.dart`
  - `{ao, stoch_rsi, alligator, mom, cmo}_indicator.dart`
- **5 Calculators (`O(1)` e `O(N)`)**
  - *Destaque*: O Alligator exigirá renderização de Offset futuro.
  - *Destaque*: O StochRSI terá que instanciar o buffer O(1) do RSI base internamente.
- **5 Painters**
  - O `Awesome Oscillator` exigirá um *HistogramPainter* customizado, diferente de linhas de painel convencionais. O Alligator é estritamente Overlay.
- **5 StateNotifier/Providers** (Riverpod)
- **Integrações** (Export, `ChartWidget`, `example/lib/main.dart`)

---

> [!IMPORTANT]
> **User Review Required**
> 1. O **Awesome Oscillator** e **MACD Histograma** geralmente usam barras verticais curtas a partir do eixo Zero. Confirmar que devo usar colunas verdes (`color > prevColor`) / vermelhas.
> 2. O **Alligator** plota valores no eixo "futuro" (Offset). Quer que desenhe além do último preço, ou que apenas corte no tempo real e desloque a linha pra direita no próprio render? (Farei projeção no eixo x do chart_scale).
> 3. O 5º indicador proposto foi o **Chande Momentum Oscillator (CMO)**. Prefere trocar para **Ultimate Oscillator** ou **TRIX**?

## ⏱️ Estimativa
- Scripts de geração (Modelos/Painters) = 1 Iteração
- Lógicos Core + UI = 1-2 Iteração.
- **Total: 1-2 passos (Aprovação > Implementação).**
